package com.geek.gkfood.framework.mq;

import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.MessageBuilder;

/**
 * <h1>RocketMQ 消息发送器。</h1><br/>
 *
 * <h1><br/><a href="https://u.geekbang.org/subject/arch3/100614201">Java 业务架构实战营：https://u.geekbang.org/subject/arch3/100614201</a></h1><br/><h1><a href="https://gitee.com/ylimhhmily/BizArchPracticeCamp">Java 业务架构实战营代码地址：https://gitee.com/ylimhhmily/BizArchPracticeCamp</a></h1><br/><h1><a href="https://u.geekbang.org/subject/java4th/1001148?source=app_share">高级 Java 工程体系课 2023 版：https://u.geekbang.org/subject/java4th/1001148?source=app_share</a></h1><br/><h1><a href="https://time.geekbang.org/column/intro/100312101?tab=catalog">Dubbo 源码剖析与实战：https://time.geekbang.org/column/intro/100312101?tab=catalog</a></h1>
 *
 * @author hmilyylimh
 * ^_^
 * @version 0.0.1
 * ^_^
 * @date 2023/9/23 22:14
 */
public class RocketMQSender {

    /**
     * <h2>最为普通的消息发送方法。</h2>
     *
     * <pre>
     *     注意：调用此方法的地方，如何传入 MessageChannel 参数呢？可以参考如下方式进行定义出来：
     *     // @Autowired
     *     // @Qualifier(Source.OUTPUT)
     *     // private MessageChannel snatchOrderSendChannel;
     *     //
     *     // 然后 RocketMQSender.send(snatchOrderSendChannel, info) 这么调用即可。
     * </pre>
     *
     * @throws
     * @param: channel
     * @param: payload
     * @return: boolean
     * @author hmilyylimh
     * @date: 2023/9/23
     */
    public static <T> boolean send(MessageChannel channel, T payload) {
        return channel.send(MessageBuilder.withPayload(payload).build());
    }
}